// #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(){
    int a = 1, b;
    char c = 'c', x, y, z, *s;

    int *p = &a;
    int *p1 = &b;
    *p = *p1;
    // p1 = &p; // p1 = p;是正确的，都指向a；如果想要p1指向p则p1应该为int **类型
    // int *p1 = &c; // 错误，初始化时int *指针只能绑定int型数据
    char *p2;
    p2 = &c;
    *p1 = *p2; // 正确，实际上相当于：b = c;会发生隐式转换（c的ASCII码赋给b）

    // x = '\'; // 错误，\是一个转义字符，\' 相当于 '，\\ 相当于 \ 
    x = '\'';
    x = '/'; // 左斜杠可以使用
    x = '017';
    y = '\xbc';
    z = '\0xab';
    s = "\017";

    printf("p.size : %d\n", sizeof(p));
    printf("p1.size : %d\n", sizeof(p1));
    printf("p2.size : %d\n\n", sizeof(p2));

    printf("p : %d\n", p);
    printf("p1 : %d\n", p1);
    printf("p2 : %d\n\n", p2);

    printf("p + 1 : %d\n", p+1);
    printf("p1 - p :%d\n", p1-p);
    printf("p2 + 1 : %d\n\n", p2+1);

    printf("*p : %d\n", *p);
    printf("*p1 : %d\n", *p1);
    printf("*p2 : %d\n\n", *p2);

    printf("%c\n", x);
    printf("%c\n", y);
    printf("%c\n", z);
    printf("%s\n", s);

    return 0;
}